GDK-Win32/4.0: Enable HiDPI support for Windows
authorChun-wei Fan <fanchunwei@src.gnome.org>
Mon, 27 Jun 2016 05:16:43 +0000 (13:16 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Fri, 4 Nov 2016 10:14:48 +0000 (18:14 +0800)
commit6abd65c83be6ba4656c5f014bc940c2eea21dfd0
tree00fb8a98cb9e43877f73ec897826fb7798351368
parent3baa4a9741835fda4b858a88d48de2bb21620b42
GDK-Win32/4.0: Enable HiDPI support for Windows

This enables HiDPI support for GTK+ on Windows, so that the
fonts and window look better on HiDPI displays.  Notes for the current
work:

-The DPI awareness enabling can be disabled if and only if an application
 manifest is not embedded in the app to enable DPI awareness AND a user
 compatibility setting is not set to limit DPI awareness for the app, via
 the envvar GDK_WIN32_DISABLE_HIDPI.  The app manifest/user setting for
 DPI awareness will always win against the envvar, and so the HiDPI items
 will be always setup in such scenarios, unless DPI awareness is disabled.

-Both automatic detection for the scaling factor and setting the scale
 factor using the GDK_SCALE envvar are supported, where the envvar takes
 precedence, which will therefore disable automatic scaling when
 resolution changes.

-We now default to a per-system DPI awareness model, which means that we
 do not handle WM_DPICHANGED, unless one sets the
 GDK_WIN32_PER_MONITOR_HIDPI envvar, where notes for it are in the
 following point.

-Automatic scaling during WM_DISPLAYCHANGE is handled (DPI setting change of
 current monitor) is now supported.  WM_DPICHANGED is handled as well,
 except that the window positioning during the change of scaling still
 needs to be refined, a change in GDK itself may be required for this.

-I am unable to test the wintab items because I don't have such devices
 around.

https://bugzilla.gnome.org/show_bug.cgi?id=768081
13 files changed:
gdk/win32/gdkdevice-win32.c
gdk/win32/gdkdevice-wintab.c
gdk/win32/gdkdevicemanager-win32.c
gdk/win32/gdkdisplay-win32.c
gdk/win32/gdkdisplay-win32.h
gdk/win32/gdkevents-win32.c
gdk/win32/gdkgeometry-win32.c
gdk/win32/gdkmain-win32.c
gdk/win32/gdkmonitor-win32.c
gdk/win32/gdkprivate-win32.h
gdk/win32/gdkscreen-win32.c
gdk/win32/gdkwindow-win32.c
gdk/win32/gdkwindow-win32.h